package thread;

/**
 * 多线程并发安全问题
 * 抢 我们要给他上锁
 */
public class SyncDemo {
    public static void main(String[] args) {
        table table = new table();
        Thread t = new Thread("线程1号") {
            public void run() {
                while (true) {
                    int bean = table.getBeans();
                    Thread.yield();
                    System.out.println(getName() + "：" + bean);
                }
            }
        };
        Thread t2 =new Thread("线程2号"){
            @Override
            public void run() {
                while (true) {
                    int  bean =table.getBeans();
                    Thread.yield();//该方法可以让运行该方法的线程主动放弃本次时间
                    System.out.println(getName()+"："+bean);
                }
            }
        };
        t.start();
        t2.start();
    }
}

class table {
    public int beans = 20;
    /*
    synchronized关键字 该方法称为：同步方法
    一起干改为排队干
    锁
     */
    public synchronized  int getBeans() {
        if (beans == 0) {
            throw new RuntimeException("无豆子了！");
        }
        return  beans--;
    }
}